Systems and methods for evaluating body motion

ABSTRACT

The present disclosure is directed towards computer-based systems and methods for evaluating a user&#39;s body motion based on motion data obtained via a series of wireless sensors attached to a user&#39;s body. In one embodiment, a computer-implemented method is disclosed herein. A server system receives motion data from one or more input devices. The motion data corresponds to movement of a user. The server system generates a motion profile based on at least the motion data received from the one or more input devices. The server system retrieves a pre-defined target motion profile from a database structure. The server system objectively evaluating the extracted motion profile by comparing one or more parameters of the generated motion profile with one or more parameters of the retrieved pre-defined target motion profile.

CROSS-REFERENCE TO RELATED APPLICATIONS

This application is a continuation of U.S. application Ser. No.16/054,074 filed Aug. 3, 2018, which claims priority to U.S. ProvisionalApplication No. 62/540,689 filed Aug. 3, 2017, which are incorporated byreference herein in their entirety.

TECHNICAL FIELD

The present disclosure is directed towards computer-based systems andmethods for evaluating a user's body motion based on motion dataobtained via a series of wireless sensors attached to a user's body. Themotion data may objectively evaluated by the computer-based system.

BACKGROUND

Conventionally, a physical therapist or trainer may measure the range ofmotion and other motion data for a particular joint before, during,and/or after an activity. For example, range of motion may be measuredmanually using a goniometer. However goniometers measurements may beinaccurate due to poor placement of the goniometer, interference due touncontrolled movements by the user, and inability to properly obtainmeasurements using the goniometers. Moreover, goniometer measurementsmay be subject to both inter-user and intra-user variability. Putsimply, a physical therapist or trainer may not measure the range ofmotion using the same method every time they see the patient, and onephysical therapist or trainer may have a different measurement techniquethan a second physical therapist or trainer. As range of motion andother movement features are important factors for benchmarking progressin patients and athletes it is critical to have the most accurate andobjective measurement of range of motion and other movement features.

Indeed, as discussed by Nussbaumer et al. (Nussbaumer, Silvio, et al.“Validity and test-retest reliability of manual goniometers formeasuring passive hip range of motion in femoroacetabular impingementpatients.” BMC musculoskeletal disorders 11.1 (2010): 194.), majordrawbacks of goniometry for hip measurements are that the startingposition, the center of rotation, the long axis of the limb and the truevertical and horizontal positions can only be visually estimated andthat conventional goniometers must be held with two hands, leavingneither hand free for stabilization of the body or the proximal part ofthe joint. There are also difficulties in monitoring joints that aresurrounded by large amounts of soft tissue, such as the hip. Thevalidity (i.e., the degree to which a measurement actually measures whatit claims to measure) and reliability (i.e., the degree to which ameasurement is consistent and stable) of manual goniometers havetherefore been questioned, especially for measuring hip flexion.

Accordingly there remains a need for systems and methods to evaluate auser's body motion in an automated and objective manner such that theyare not prone to human error or variation due to human recording.

SUMMARY

In one embodiment, a computer-implemented method is disclosed herein. Aserver system receives motion data from one or more input devices. Themotion data corresponds to movement of a user. The server systemgenerates a motion profile based on at least the motion data receivedfrom the one or more input devices. The server system retrieves apre-defined target motion profile from a database structure. The serversystem objectively evaluating the extracted motion profile by comparingone or more parameters of the generated motion profile with one or moreparameters of the retrieved pre-defined target motion profile.

In another embodiment, a computer-implemented method is disclosedherein. A server system receives motion data from a plurality of inputdevices positioned about a user while performing a movement. The serversystem generates a motion profile for the user based at least on themotion data, by calculating a position of a joint of the user's bodybased on the motion data, calculating positions of at least tworeference points of the user's body based on the motion data, andcalculating an actual range of motion for the joint based on theposition of the joint and the positions of the at least two referencepoints. The server system retrieves a reference range of motion from adatabase storing one or more reference range of motions for one or moremovements. The system evaluates a user's body motion by comparing thereference range of motion to the actual range of motion to objectivelyevaluate the user's movement.

In another embodiment, a system is disclosed herein. The system includesone or more input devices, a processor, and a memory. The one or moreinput devices are configured to capture a movement of a user. Theprocessor in communication with the one or more input devices. Thememory has programming instructions stored thereon, which, when executedby the processor, performs an operation. The operation includesreceiving motion data from the one or more input devices, the motiondata corresponding to movement of a user. The operation further includesgenerating a motion profile based on at least the motion data receivedfrom the one or more input devices. The operation further includesretrieving a pre-defined target motion profile from a databasestructure. The operation further includes objectively evaluating theextracted motion profile by comparing one or more parameters of thegenerated motion profile with one or more parameters of the retrievedpre-defined target motion profile.

The present disclosure relates to computer based systems and methods forevaluating a user's body motion in an automated and objective fashion.To that end, a computer-implemented method for automated movementevaluations may extract a motion profile from motion data received fromone or more wireless sensors configured to obtain motion information ofa user, retrieve a pre-defined target motion profile from a databasestructure, and objectively evaluate the extracted motion profile bycomparing one or more parameters of the extracted motion profile withone or more corresponding parameters of the retrieved pre-defined targetmotion profile. In one embodiment, the computer-implemented method maybe configured to take one or more actions as a result of the objectiveevaluation.

In one embodiment, the systems and methods described herein may beintegrated with the administrative computer systems used by physicaltherapists, medical professionals, insurance companies and the like.Accordingly, the systems and methods described herein may provideautomated coding and billing services to third party providers, andmonitor and convey information related to patient compliance andprogression.

In one embodiment, the systems and methods described herein may providemeans for improving a patient or athlete's performance of a particularmovement.

In one embodiment, the computer based system for automated movementevaluations may be integrated with administrative medical computersystems and provide automated billing, insurance, and prescriptionassistance.

BRIEF DESCRIPTION OF THE DRAWINGS

Many aspects of the present embodiments may be better understood withreference to the following drawings. The components in the drawings arenot necessarily to scale, emphasis instead being placed uponillustrating example embodiments:

FIG. 1 is a system diagram showing a body motion evaluation system,according to an embodiment of the present disclosure.

FIG. 2 is a system diagram of an illustrative computer system, accordingto another embodiment of the present disclosure.

FIG. 3 is a flow diagram showing a process for generating a graphicalrepresentation of a user's body based on motion data obtained from aplurality of sensors attached to the user, according to an embodiment ofthe present disclosure.

FIG. 4 is a flow chart showing a process for evaluating a user's bodymotion based on motion data obtained from a plurality of sensorsattached to the user, according to an embodiment of the presentdisclosure.

FIG. 5 is system diagram showing a body motion evaluation system,according to another embodiment of the present disclosure.

FIG. 6 is system diagram showing a body motion evaluation system,according to another embodiment of the present disclosure.

FIGS. 7-21 show illustrative user interfaces (UIs) that may be usedwithin a body motion evaluation system, according to embodiments of thepresent disclosure.

DETAILED DESCRIPTION

The present disclosure relates to computer based systems and methods forautomated movement evaluations. To that end a computer-implementedmethod for automated movement evaluations may extract a motion profilefrom motion data received from one or more wireless sensors configuredto obtain motion information of a user, retrieve a pre-defined targetmotion profile from a database structure, and objectively evaluate theextracted motion profile by comparing one or more parameters of theextracted motion profile with one or more corresponding parameters ofthe retrieved pre-defined target motion profile. In one embodiment, thecomputer-implemented method may be configured to take one or moreactions as a result of the objected evaluation.

FIG. 1 is a system diagram illustrating a body motion evaluation system100, according to an exemplary embodiment. Body motion evaluation system100 may include a processing system (or “server”) 102, a database 104, aplurality of sensors 106 a-106 n (106 generally), and a plurality ofoutput devices 108 a-108 n (108 generally). In some embodiments, thesystem 100 may also include a plurality of cameras 107 a-107 n (107generally). The sensors, cameras, and output devices may be incommunication with the server 102 via a network 110.

Network 110 may be of any suitable type, including individualconnections via the Internet, such as cellular or Wi-Fi networks. Insome embodiments, network 105 may connect terminals, services, andmobile devices using direct connections, such as radio frequencyidentification (RFID), near-field communication (NFC), Bluetooth™,low-energy Bluetooth™ (BLE), Wi-Fi™ ZigBee™, ambient backscattercommunication (ABC) protocols, USB, WAN, or LAN. Because the informationtransmitted may be personal or confidential, security concerns maydictate one or more of these types of connection be encrypted orotherwise secured. In some embodiments, however, the information beingtransmitted may be less personal, and therefore, the network connectionsmay be selected for convenience over security.

Network 110 may include any type of computer networking arrangement usedto exchange data. For example, network 110 may include any type ofcomputer networking arrangement used to exchange information. Forexample, network 110 may be the Internet, a private data network,virtual private network using a public network and/or other suitableconnection(s) that enables components in body motion evaluation system100 to send and receiving information between the components of bodymotion evaluation system 100.

The sensors 106 may be attached to the body of a user 112. In someembodiments, the sensors may be coupled to one or more articles ofclothing that can be worn by the user 112. For example, the sensors 106may be attached to a tight-fighting body suit that can be worn by theuser 112. In another example, the sensors 106 may be attached to asleeve (e.g., arm compression sleeve, calve compression sleeve,quadriceps/hamstring compression sleeve, etc.). In one embodiment,sensors 106 may be located proximate a user's wrist, shoulder and/orback.

Data generated by the sensors 106 and cameras 107 may be provided to theserver 102 via the network 110. The illustrative server 102 includes asensor module 102 a, camera module 102 b, visualization module 102 c,output generation module 102 d, database management module 102 e, and anevaluation module 102 f. The operations described herein may be achievedwith any suitable number of modules.

Each of the sensors 106 is configured to generate motion data responsiveto the user's body motion. In one embodiment, each of the one or moresensors 106 may include an accelerometer, magnetometer, and/orgyroscope. An accelerometer may be configured to measure accelerationforces at the location of each sensor 106. In some embodiments, theacceleration forces may be measured in units of meters persecond-squared (m/s²). In some embodiments, the magnetometer may beconfigured to measure magnetism and be normalized for Earth's magneticfield. In some embodiments, a gyroscope may be configured to measureangular velocity in units of radians per second (ω). In some embodimentsembodiments, a sensor's accelerometer, magnetometer, and/or gyroscopemay be provided as MEMS (microelectromechanical systems) inertialsensors. In some embodiments, each sensor 106 may generate roll, pitchand yaw data responsive to the user's body motion at the point on theuser's body where the sensor is located.

Each sensor 106 may generate motion data responsive to the user on anysuitable time-scale. For example, in one embodiment the sensors 106 maygenerate motion data on a time-scale of 1,000 data points per second.Sensor motion data may be processed by one or more filtering and/ordown-sampling techniques. In some embodiments, Kalman filters may beused. In some embodiments, motion data may be down-sampled to atime-scale of 125 data points per second. In some embodiments, thefiltering and/or down sampling techniques may be performed at the siteof the sensor 106, prior to each sensor 106 wirelessly transmittingmotion data to the server system 102. In some embodiments, the entiretyof the obtained sensor motion data may be transmitted to the serversystem 102 and then filtered and/or down sampled at the server system102 by a sensor module 102 a.

In some embodiments, the sensors 106 may transmit motion data to theserver system 102 wirelessly via network 110. For example, sensors 106may transmit motion data to the server system 102 using Bluetooth®,Wi-Fi, near-field communication (NFC), ZigBee , or any other suitablewireless communication means.

Although the embodiment illustrated in FIG. 1 includes a single serversystem 102, those skilled in the art may readily understand thatmultiple server systems may be used. In some embodiments, the multipleserver systems may cooperate to evaluate a user's body motion. Forexample, a sensor module within a first server system may perform aninitial processing of sensor motion data, and a second server system mayreceive and use the initially processed motion data to perform anevaluation of the user's body motion.

In one embodiment, motion data obtained from the sensors 106 may beconverted to “positional data” describing to the position of one or morejoints, limbs, and/or other reference points on the user's body.Converting sensor motion data to positional data can be based onknowledge of where the sensors 106 are attached to the user's body,dimensions of the user's body, and/or dimensions of clothing worn by theuser onto which the sensors are attached. The position data may, inturn, be used to calculate information (or “joint data”) about one ormore joints of interest, such as range of motion, velocity,acceleration, or other aspects of angular movements about a joint.Example joints of the interest may include the elbow, wrist, shoulder,hip, knee, and ankle.

In one embodiment, the conversion from sensor motion data to positionaldata for the joints may involve one or more coordinate transformations.For example, in one embodiment, sensor motion data represented as (roll,pitch yaw) values may be converted to 3D Cartesian positional data,e.g., (x, y, z) values using forward kinematics. In one embodiment,motion data received from the sensors 106 may be converted from (roll,pitch, yaw) values into a Quaternion representation. In one embodiment,motion data represented as Quaternions may then be converted topositional data and/or joint data.

In one embodiment, the joint data may include a measure of the angleformed at a joint by two limbs that connect at the joint. In oneembodiment the angle formed at the joint may be calculated based on atriangulation of the angle formed by the position of at least twosensors 106 with respect to the floor or another reference point. In oneembodiment the angle formed at the joint may be calculated based on atriangulation of the angle formed by the position of the at least twolimbs with respect to the floor or another reference point. Joint datamay be obtained from positional data by analyzing the orientation of oneor more sensors with respect to the user's limbs and joints. In oneembodiment this may require knowledge of a user's limb length. This mayinclude limb calculations based on a user's height and weight. In oneembodiment joint data may be calculated based on information statisticalpopulation information and anatomy research.

In one embodiment, the described system may calculate an angle for thejoint of interest based on the angle formed by two 3D Cartesian vectorse.g., (x, y, z) at the joint of interest. In one embodiment the systemmay display a triangle in a user interface illustrative of the two 3DCartesian vectors and the angle for the joint. The angle for the jointmay be calculated using mathematical techniques applying dot products,inverse trigonometric functions and radians to degree conversion.

In one embodiment, the described system may calculate a “between” valuerepresentative of the angle between a target joint and the next adjacentjoint to the target joint. The between value may be calculated based onthe angle between two directional vectors. The first directional vectormay be calculated by subtracting the position of the previous adjacentjoint from the position of the target joint. The second directionalvector may be calculated from subtracting the position of the targetjoint from the position of the target joint.

In one embodiment, the described system may calculate an “extend” valuerepresentative of the angle between the direction of the target joint tothe next adjacent joint to the target joint. The extend value may alsobe calculated as an angle between two directional vectors. The firstdirectional vector may be calculated by subtracting the position of thetarget joint from the position of the previous adjacent joint. Thesecond directional vector may be calculated from subtracting theposition of the target joint from the position of the target joint.

In one embodiment, the described system may calculate an “axis” valuerepresentative of the measure of the angle formed by the target jointwhen compared to a given axis. In one embodiment the “axis” value mayinclude a feature that allows a three-dimensional vector to offset thecalculation and provide a customized measure of the angle. The axisvalue may be calculated using 2D (i.e., XY, YZ, XZ) planes used tocreate a directional vector to measure against the angle in 3D space. Inone embodiment the axis value may allow a user to ignore unwanted valuesin the angle measurement. For example, the axis value may allow a userto ignore any horizontal movements when raising their arm vertically.

The visualization module 102 c can generate visualizations of a userbody movement based on, for example, calculated joint data. Suchvisualizations may include 3D avatars, wireframes, and animatedavatars/wireframes. In some embodiments, visualization module 102 c cangenerate an animated wireframe of the user's movement having a pluralityof nodes determined using positional and/or joint data. The positionaland/or joint data may be used to determine the movement of nodes withinthe animation so that the visualization may accurately illustratereal-time user movement (i.e., movement sensed in real-time) orpre-recorded user movement. In one embodiment, the visualization module102 c may generate a visualization based on input from one or morecameras 107 in addition to positional and/or joint data. Data recordedby the cameras 107 may be transmitted via the network 110 to the serversystem 102 and processed by camera module 102 b before being integratedwith positional and/or joint data by the visualization module 102 c. Avisualization generated by the visualization module 102 c may begenerated by an output generation module 102 d and displayed on one ormore output devices 108.

In some embodiments, the visualization module 102 c may be configured togenerate and overlay multiple different visualizations onto each other.For example, as discussed below, reference motion profiles may be storedin a database 104. The visualization module 102 c can overlay (i.e.,superimpose) an animation (or other visualization) of stored referencemovements with an animation of real-time user movements to facilitateevaluation of the user's range of motion.

In one embodiment, an evaluation module 102 f of the server system 102may be configured to provide an evaluation of a movement recorded by thesensors 106 as will be discussed in relation to FIG. 4.

The database management module 102 e of the server system 102 may beconfigured to interface with a database 104 coupled to the server system102. The database management module 102 e may be used to access,retrieve, and modify data stored in the database 104. The database 104may include one or more repositories that hold data and information.

An exercise repository 104 a of the database 104 may store informationabout “ideal” (or “perfect” or “target”) movements associated withcertain exercises that can be performed by a user. Such information isreferred to herein as a “motion profile.” A motion profile may beembodied as positional data, joint data, visualizations, video, and/orany combination thereof. Motion profiles can be retrieved from theexercise repository 104 a and used to generate a visualization of thecorresponding “ideal” movements that can be compared in real-timeagainst a user's sensed motion.

In one embodiment the exercise repository 104 a of the database 104 maystore animation files along with metadata for an exercise. The stored“motion profile” may include information related to the motion includinga title, file path, target joint, measurement type, benchmark angles,duration and billing code. In one embodiment the stored animation mayinclude animation for some or all character profiles including a 3Davatar, wireframe, and overlay. In one embodiment the stored animationis in an Enflux recording animation file format (.enfl).

The database 104 may also include a billing information repository 104 bthat is configured to include billing and insurance information relatedto particular exercises or groups of exercises. For example, eachexercise in the exercise repository 104 a may be associated with aCurrent Procedural Terminology (CPT) code that is compatible withstandardized billing practices in the medical fields.

The database 104 may also include a user history repository 104 c thatis configured to store various information associated with particularusers. For example, a user's body motion can be captured and stored as amotion profile with the repository 104 c. Similar to the “ideal” motionprofiles discussed above, the user's historical motion profiles can becompared against subsequent real-time motion for evaluation purposes.Other user information that could be stored includes the user's accountregistration information, prescribed exercises and training/physicaltherapy protocols, and billing and insurance information.

In some embodiments, an output generation module 102 d may process theinformation obtained by the server 102 and create the appropriate outputfor one or more output computing devices 108. For example, an outputcomputing device 108 may include a patient/athlete computer device, aninsurance company computing device, and the like. In one embodiment, theoutput generation module 102 d may produce an application, website, orthe like for a user, medical professional, or insurance agency personnelto view data and information related to movement. The output generationmodule 102 d may generate prescriptions, directly bill insurancecompanies, and display exercises on an output computing device 108.Example outputs generated by the output generation module 102 d areillustrated in FIGS. 7-22.

In some embodiments, the server system 102 may include one or moreprocessors, or microprocessors coupled to one or more non-transitorymemory devices, and may be adapted to perform the functions describedherein. A server system 102 may be any special-purpose machine capableof storing and executing a set of computer-readable instructions (e.g.,software) that specify actions to be taken to perform the functionsdescribed herein. Alternatively, the server system 102 may be aspecialized component specifically designed to optimize therelationships set forth herein. The term “server” shall also be taken toinclude any collection of machines that individually or jointly executea set (or multiple sets) of instructions to perform any one or more ofthe methodologies discussed herein. In some examples, at least two ofthe multiple server systems may be in different physical locations.

A server system 102 is one example of computer-readable storage medium.The term “computer-readable storage medium” should be taken to include asingle medium or multiple media that store one or more sets ofinstructions. The term “computer-readable storage medium” shall also betaken to include any medium that is capable of storing or encoding a setof instructions for execution by the machine and that causes the machineto perform any one or more the methodologies of the present disclosure.

FIG. 2 show an example of a computer system 200, according to an aspectof the present disclosure. In some embodiments, computer system 200 maybe the same as or similar to a computer system utilized by a sensordevice 106, camera device 107, output device 108, and/or server system102 of FIG. 1.

The computer system 200 is an example of a machine within which a set ofinstructions for causing the machine to perform any one or more of themethodologies, processes or functions discussed herein may be executed.In some examples, the machine may be connected (e.g., networked) toother machines as described above. The machine may operate in thecapacity of a server or a client machine in a client-server networkenvironment, or as a peer machine in a peer-to-peer (or distributed)network environment. The machine may be any special-purpose machinecapable of executing a set of instructions (sequential or otherwise)that specify actions to be taken by that machine for performing thefunctions describe herein. Further, while only a single machine isillustrated, the term “machine” shall also be taken to include anycollection of machines that individually or jointly execute a set (ormultiple sets) of instructions to perform any one or more of themethodologies discussed herein. In some examples, each of the outputcomputing devices 108 may be implemented by the example machine shown inFIG. 2 (or a combination of two or more of such machines).

Example computer system 200 may include processing device 201, memory205, data storage device 209 and communication interface 213, which maycommunicate with each other via data and control bus 211. In someexamples, computer system 200 may also include display device 215 and/oruser interface 217.

Processing device 201 may include, without being limited to, amicroprocessor, a central processing unit, an application specificintegrated circuit (ASIC), a field programmable gate array (FPGA), adigital signal processor (DSP) and/or a network processor. Processingdevice 201 may be configured to execute processing logic 203 forperforming the operations described herein. In general, processingdevice 201 may include any suitable special-purpose processing devicespecially programmed with processing logic 203 to perform the operationsdescribed herein.

Memory 205 may include, for example, without being limited to, at leastone of a read-only memory (ROM), a random access memory (RAM), a flashmemory, a dynamic RAM (DRAM) and a static RAM (SRAM), storingcomputer-readable instructions 207 executable by processing device 201.In general, memory 205 may include any suitable non-transitory computerreadable storage medium storing computer-readable instructions 207executable by processing device 201 for performing the operationsdescribed herein. Although one memory device 205 is illustrated in FIG.2, in some examples, computer system 200 may include two or more memorydevices (e.g., dynamic memory and static memory).

Computer system 200 may include communication interface device 213, fordirect communication with other computers (including wired and/orwireless communication), and/or for communication with network. In someexamples, computer system 200 may include display device 215 (e.g., aliquid crystal display (LCD), a touch sensitive display, etc.). In someexamples, computer system 200 may include user interface 217 (e.g., analphanumeric input device, a cursor control device, etc.).

In some examples, computer system 200 may include data storage device209 storing instructions (e.g., software) for performing any one or moreof the functions described herein. Data storage device 209 may includeany suitable non-transitory computer-readable storage medium, including,without being limited to, solid-state memories, optical media andmagnetic media.

FIG. 3 is a flow diagram illustrating a method 300 for generating avisualization for a character profile (3D avatar, wireframe or overlay)that may be representative of a user's body motion, according to oneexemplary embodiment. Method 300 may begin at step 302.

At step 302, server system 102 may receive motion data from one or moreinput devices. For example, server system 102 may receive motion datafrom one or more sensors 106 positioned on or proximate to a body ofuser 112. Server system 102 may further receive motion data from one ormore camera devices 107 capturing movement of user 112. Server system102 may receive the motion data via network 110. In some embodiments,visualization module 102 c may receive the motion data captured by oneor more sensors 106 via sensor module 102 a. In some embodiments,visualization module 102 c may receive motion captured by one or morecamera devices 107 via camera module 102 b.

In some embodiments, sensor module 102 a and camera module 102 b maytransmit motion data to visualization module 102 c in real-time or nearreal-time. In some embodiments, sensor module 102 a and camera module102 b may transmit motion data to visualization module 102 cperiodically (i.e., at pre-defined points during the day). In someembodiments, sensor module 102 a and camera module 102 b may transmitmotion data only when prompted by visualization module 102 c.

At step 304, server system 102 may convert the received motion data topositional data. For example, visualization module 102 c may convertedto the received motion data to positional data that describes to theposition of one or more joints, limbs, and/or other reference points onthe user's body.

In some embodiments, converting sensor motion data to positional datamay be based on sensor 106 location, dimensions of the user's body,and/or dimensions of clothing worn by the user. Positional data may beused to locate one or more joints of interest such as elbow, wrist,shoulder, hip, knee, and ankle.

In some embodiments, visualization module 102 c may convert motion datato positional data via one or more coordinate transformations. Forexample, sensor motion data, represented as (roll, pitch yaw) values,may be converted to 3D Cartesian positional data (e.g., (x, y, z)values) using forward kinematics. In some embodiments, motion datareceived from the input devices may be converted from (roll, pitch, yaw)values into a Quaternion representation. In some embodiments, motiondata represented as Quaternions may then be converted to positional dataand/or joint data.

At step 306, server system 102 may calculate joint data may becalculated based on at least one of the motion data and positional data.Visualization module 102 c may obtain joint data from positional data byanalyzing the orientation of one or more sensors with respect to theuser's limbs and joints. In some embodiments, this may require knowledgeof a user's limb length. This may include limb calculations based on auser's height and weight. In some embodiments, visualization module 102c may calculate joint data based, in part, on statistical populationinformation and anatomy research.

Joint data may include a measure of the angle formed at a joint by twolimbs that connect at the joint. In some embodiments, calculating theangle formed at the joint may be based on a triangulation of the angleformed by the position of at least two sensors 106 with respect to thefloor or another reference point.

In some embodiments, calculating the angle formed at the joint may bebased on a triangulation of the angle formed by the position of the atleast two limbs with respect to the floor or another reference point.

In some embodiments, visualization module 102 c may calculate an anglefor the joint of interest based on the angle formed by twothree-dimensional vectors at the joint of interest. The angle for thejoint may be calculated using mathematical techniques, such as, dotproducts operations, inverse trigonometric functions, radians-to-degreesconversion, and the like.

In some embodiments, joint data may further include a “between” valuerepresentative of the angle between a target joint and the next adjacentjoint to the target joint. Visualization module 102 c may calculated thebetween value based on the angle between two directional vectors. Thefirst directional vector may be calculated by subtracting the positionof the previous adjacent joint from the position of the target joint.The second directional vector may be calculated from subtracting theposition of the target joint from the position of the target joint.

In some embodiments, joint data may further include an “extend” valuerepresentative of the angle between the direction of the target joint tothe next adjacent joint to the target joint. Visualization module 102 cmay calculate the extend value based on an angle between two directionalvectors. The first directional vector may be calculated by subtractingthe position of the target joint from the position of the previousadjacent joint. The second directional vector may be calculated fromsubtracting the position of the target joint from the position of thetarget joint.

In some embodiments, joint data may further include an “axis” valuerepresentative of the measure of the angle formed by the target jointwhen compared to a given axis. In some embodiments the axis value mayinclude a feature that allows a three-dimensional vector to offset thecalculation and provide a customized measure of the angle. Visualizationmodule 102 c may calculate the axis value using two dimensional planesto create a directional vector to measure against the angle inthree-dimensional space.

At step 408, server system 102 may generate a character profile byapplying one or more of the motion data, positional data, and joint datato a character profile. In one embodiment, the character profile may bestored in the database 104.

FIG. 4 is a flow diagram illustrating a method 400 for evaluating auser's body motion based on motion data obtained from a plurality ofsensors attached to the user, according to an exemplary embodiment.

The one or more steps discussed in conjunction with method 400 mayprovide an objective evaluation of a user's movement by comparing a newrecorded user movement with an “ideal” movement. In some embodiments,the “ideal” movement may be a recording of a movement performed by aprofessional athlete or physical therapist stored in the exerciserepository 104 a. In some embodiments, the new recorded user movementmay be compared with a user's past recorded movements stored in the userhistory repository 104 c.

At step 402, the output generation module 102 d of the server system 102may retrieve a stored motion profile from the database 104 via thedatabase management module 102 e. The stored motion profile may be apart of the exercise repository 104 a and/or the user history repository104 c. In one embodiment, the stored motion profile that is used for theevaluation may be specified by a user (patient/athlete), physicaltherapist, medical professional or the like. The stored motion profilemay be specified thru an interactive graphical user interface,application and the like. In one embodiment, the user, physicaltherapist, or medical professional who specifies the stored motionprofile to use may use a search feature that identifies the storedmovements in the database 104 that may be used as a part of theevaluation.

At step 404, output generation module 102 d may retrieve a characterprofile generated for the user. For example, output generation module102 d may retrieve the character profile generated above, in conjunctionwith method 300. Output generation module 102 d may extract a motionprofile from sensor motion data received from one or more wirelesssensors configured to obtain motion information for a user by way of thevisualization module 102 c in accordance with the methods discussedabove.

At step 406, an evaluation module 102 f of server system 102 may thenobjectively evaluate the extracted motion profile by comparing thestored motion profile with the extracted motion profile in another step405. For example, evaluation module 102 f may compare position data,angle range of the joint, velocity, acceleration, jerk, and peak spreador the furthest angle of separation between the two limbs at the jointof the extracted motion profile to position data, angle range of thejoint, velocity, acceleration, jerk, and peak spread or the furthestangle of separation between the two limbs at the joint of the storedmotion profile.

At step 408, evaluation module 102 f may then generate an evaluation ofthe newly recorded user movement. The objective evaluation of theextracted motion profile may involve a comparison of one or moreparameters of the extracted motion profile with that of the retrievedpre-defined target motion profile. Possible parameters may includeposition data, angle range of the joint, velocity, acceleration, jerk,and peak spread or the furthest angle of separation between the twolimbs at the joint.

In addition to providing an objective measure of a person's movement,the evaluation module 102 f may provide an objective means foridentifying points of pain or difficulty in a patient or athlete'smovement by locating points within the movement that are not smooth in atrace of the movement over time.

FIG. 5 is system diagram showing a body motion evaluation system 500,according to an exemplary embodiment. Body motion evaluation system 500includes a database 502, application programming interfaces (API)endpoints 504, a user account module 506, an orders module 508, amedical code module 510, a reporting module 512, and one or moregraphical user interfaces (GUIs) 520.

As illustrated a user such as an athlete or patient 522 may access thebody motion evaluation system 500 by way of a graphical user interface520. A different graphical user interface may be provided to a clinician524 having administrative privileges. Based on their login information506, the athlete or patient 522 and clinician 524 may be privy todifferent portions of the database 502, also known as a “web locker.”The body motion evaluation system 500 may include the ability for usersto place or fulfill orders 508 such as providing a user with aprescription for a physical therapy regimen. The system 500 may alsoreport user compliance (participation in a prescribed physical therapyregimen) to an insurance company by way of the reporting module 512. Thesystem 500 may also be configured to bill an insurance company for themovements included in the prescribed physical therapy regimen by way ofa medical code module 510. The system may also include one or moreapplication programming interfaces 504 that allow the system 500 tocommunicate with administrative computers 514, patient sensors 516 andinsurance companies 518.

FIG. 6 is system diagram showing a body motion evaluation system 600,according to another embodiment of the present disclosure. The bodymotion evaluation system 600 includes a database 602, a performancemodule 604, and a therapy module 606. In one embodiment the performancemodule 604 may be configured to improve the performance of an athlete.In one embodiment the therapy module 606 may be configured to providephysical therapy to an athlete or patient. The performance module 604may be configured to interface with users by way of a desktop 608 a, webbrowser 608 b, Android® application 608 c, or Apple® based operatingsystems 608 d. The therapy module 606 may be configured to interfacewith users by way of a desktop 610 a, web browser 610 b, Android®application 610 c, or Apple® based operating systems 610 d.

FIGS. 7-21 show illustrative user interfaces (UIs) that may be usedwithin a body motion evaluation system, according to embodiments of thepresent disclosure.

As depicted in FIG. 7 in one embodiment, a user may be asked to create aprofile that includes information including their insurance carrier,height, and weight. The insurance carrier information may be used inorder to automatically bill insurance companies for physical therapytreatments. The height and weight information may be used to generatethe joint data from the positional data and/or sensor motion data. Inone embodiment the user information provided when creating a profile maybe stored within a user history repository 104 c and configure settingsin the billing information repository 104 b.

As depicted in FIG. 8 the user may be routed to an user interface thatcontains one or more panels providing information related to the systemand methods for evaluating body motion. In one embodiment, a first panel801 may provide a representation of an “ideal” motion, a second panel803 may provide a live tracking representation of a user's current bodyposition, a third panel 805 may provide a representation of the sensorslocated on the user's body and a fourth panel 807 may provideinformation related to the cameras.

As illustrated in FIG. 9 in one embodiment the user interface may beconfigured with a menu bar 901 that displays information related to thestate of the sensors. For example, as depicted the sensors on the shirtare streaming information while the sensors in the pans aredisconnected. The menu bar 901 may include options to calibrate thewireless sensors, reset the orientation, align the sensors, and manageBluetooth® data transfer settings.

As discussed above in one embodiment the first panel 801 may provide arepresentation of an “ideal” motion. A representation may include avideo recording, a wireframe animation, a 3D avatar animation, anoverlay animation, and the like. As illustrated in FIG. 10 the “ideal”motion may be selected from one or more stored motions. For example, theuser interface may provide a drop down menu 809 that allows a user toselect stored motions corresponding to a particular joint such as theshoulder, knee, or hip or belonging to a particular set of motions suchas a functional movement library. In one embodiment, the user may beable to search 811 thru a collection of stored motions to locate an“ideal” motion. In one embodiment the stored motions may be located inan exercise repository 104A of the database 104. In one embodiment, the“ideal” motion may correspond to a previously captured user motion thatis stored in a user history repository 104 c of the database 104.

As illustrated in FIG. 11 the user interface may be configured todisplay a recording of the representation of the selected “ideal” motionin a first panel 801. The user may also select a joint or sensor ofinterest 805 a in the second panel 805. In response to the user'sselection, the angle formed by the selected joint or sensor of interestmay be calculated and displayed 801 a for the “ideal” motion in a firstpanel 801, and the angle for the selected joint or sensor of interestmay also be calculated and displayed 803 a for the user's motion inreal-time 803. In the depicted example, a user has opted to view theangle information for the shoulder. In one embodiment, the user may alsoadjust the orientation of the representation (i.e., the 3D avatar,wireframe, or overlay) so that the joint or sensor of interest is moreclearly visible.

As illustrated in FIG. 12 the user interface may be configured so that auser's live motion is recorded and available for playback in the secondpanel 803. Accordingly, a user may be able to play a recording of the“ideal” motion synchronized with a recording of the user's motion.

As illustrated in FIG. 13 the user interface may include a motionrepresentation settings panel 813 that allows a user to select thecharacter representation they would like to see for the “ideal” motionand/or the user motion. As depicted the character representation may bea wireframe, overlay, or 3D avatar. The motion representation settingspanel 813 may also include the option of displaying camera data from awebcam that populates panel 807 and angle data that may be superimposedon the motion representations of the “ideal” motion and the user motion.

As illustrated in FIG. 14 “ideal” motion and/or user motion may berepresented as a wireframe and/or overlay. As illustrated with regardsto the “ideal” motion, the shoulder flexion angle may be calculatedbased on a triangle drawn between the arm, a position on the user'sbody, and the joint of interest, the shoulder.

As illustrated in FIG. 15 the user interface may include an evaluationpanel 815 that provides a graphical representation comparing a user'srecorded movement with an “ideal” movement. As illustrated, thecomparison may display the angle of interest over time in degrees perframe. Suitable comparison parameters may also include position,velocity, acceleration over time.

As illustrated in FIG. 16 the third panel 805 providing a representationof the sensors located on the user's body may also include one or moremenus that allow a user to select various configurations for measuringthe angles of interest.

As illustrated in FIG. 17 in one embodiment the user interface inconnection with the output generation module 102 d may produce anevaluation or report. The evaluation may provide a comparison of theuser's recorded movement with an “ideal” movement. In one embodiment theevaluation may display the user's personal information, the time anddate of the report was generated, the time and date of the movementbeing evaluated, the movement of interest, the timing for the movementof interest, where the measurement was taken from, what the maximumangle of measurement was and a graph comparing the user's recordedmovement with an “ideal” movement. The graph may display the angle ofinterest over time in degrees per frame, position, velocity, and/oracceleration over time. From the graph it may be possible to identifypoints of pain based on the shape of the graph. The evaluation or reportmay also include time-stamping so the user may see the routine of theduration and frequency of exercise. This may allow a user's progress tobe tracked per session and over selected extended periods of time (e.g.day, week, month, year).

As illustrated in FIG. 18 in one embodiment a clinician such as aphysical therapist or trainer may use the user interface to prescribe aseries of exercises for a patient or athlete to complete. The clinicianmay input information regarding the user's condition, and select one ormore exercises that are stored in the exercise repository 104A in thedepicted prescription portal 817. The data input by the clinician maythen be exported into prescription email, or prescription document thatis provided to the user.

For example, as illustrated in FIG. 19, the prescription document 1900may be automatically generated based on the selections made by theclinician. The prescription document 1900 may automatically include adescription and images that correspond to the selected exercises.

As illustrated in FIG. 20 the user interface may also include a billingportal 2000. Using the billing portal, a clinician or user may selectone or more exercises that were performed with the user. The billingportal 2000 may then retrieve billing information such as CPT codes fromthe billing information repository 104 b in order to automaticallygenerate an invoice compatible with insurance company computing systems.

As illustrated in FIG. 21 the user interface may also be used forsports-specific performance training applications corresponding to theperformance module 604. The user interface that displays a target sportsspecific ideal motion and a live tracking of athlete motion. In oneembodiment the user interface may be configured differently for asports-specific performance training application corresponding to theperformance module 604 than for a therapy based application.

In one embodiment the output generation module may generate applicationsspecific to a user. User specific applications may be tailored to theneeds of the veterans rehabilitation market, the fitness and athleticimprovement market, the mobile and personal device digital productsmarket and the medical market.

In one embodiment the systems and methods described herein may be usedas a baseline diagnostic and informational tool within a hospital orother medical care environment. For example, the systems and methodsdescribed herein may be used in connection with regenerative medicinegroups as a means to track the effect of and outcomes from stem cellinjections or other physical therapy treatments. Additionally, the usercompliance and billing aspects of the systems and methods describedherein may be useful for medical care provided in connection withworker's compensation.

In one embodiment the systems and methods described herein may be usedas a supportive pre- or post-op information resource for orthopedics orother medical professionals. For example, the systems and methodsdescribed herein may be used in an in-home setting and allow for in-homerehabilitation after orthopedic surgery. With conventional in-homerehabilitation or center based rehabilitation often times physicaltherapy is unsuccessful in aiding a patient or athlete in obtainingtheir full range of motion due to non-compliance and lack of oversightfrom medical professionals. As a result, many patients and athletes mayundergo second corrective surgeries. The systems and methods describedherein may provide remote tracking, and guided physical therapy routineswith oversight from medical professionals, thus assisting with patientand athlete compliance and providing an improved quality of physicaltherapy.

In one embodiment the systems and methods described herein may be usedby wellness providers such as physical therapists, masseuses orchiropractors. In one embodiment the wellness providers may trackpatient/client motion prior to, during, and after treatment and providethe information to patients and clients using the systems and methodsdescribed herein.

In one embodiment the systems and methods described herein may beprovided to primary care physicians as a part of routine patientmonitoring during yearly examinations.

In one embodiment, the systems and methods described herein may involveone or more of the following steps in any suitable order. In one step auser may putt on a body suit containing wireless sensors. In one stepthe sensors on the body suit may be paired to a computing device. In onestep a user may select a target or ideal motion profile for comparison.In one step the body suit may starting a recording of a user's movementwhile the user is wearing the suit. In one step the suit transmits datato the computing device while recording the user's movement. In one stepangle data is recorded based on the target joint and measurement type.In one step a suit may stream data to the computing device. In one steprotational data corresponding to the shirts or pans of the body suit maybe transmitted over Bluetooth® or other suitable communication protocolsto an application. In one step rotational data (in Quaternions) may beapplied to corresponding joints of a character profile (e.g., 3Davatar).

While the present disclosure has been discussed in terms of certainembodiments, it should be appreciated that the present disclosure is notso limited. The embodiments are explained herein by way of example, andthere are numerous modifications, variations and other embodiments thatmay be employed that would still be within the scope of the presentdisclosure.

What is claimed is:
 1. A computer-implemented method comprising:receiving, by a computing system over a wireless network, motion datadirectly from one or more sensors located on a body of a user, themotion data corresponding to movement of the user; converting, by thecomputing system, the motion data to positional data for each joint ofthe user based on an orientation of each sensor with respect to eachjoint and limb of the user, the converting comprising: transformingroll, pitch, and yaw coordinates of the motion data to three dimensionalpositional data that illustrates one or more positions of at least oneof one or more joints, limbs, and other reference points on the body ofthe user; generating, by the computing system, joint data for each jointof the user based on the positional data; generating, by the computingsystem, a motion profile based on at least the joint data; andevaluating the motion profile, by the computing system, by comparing oneor more parameters of the motion profile with one or more pre-definedparameters of a pre-defined target motion profile.
 2. Thecomputer-implemented method of claim 1, wherein generating, by thecomputing system, the joint data for each joint of the user based on thepositional data comprises: for each joint, calculating an angle formedat the joint based on a triangulation of the angle formed by a positionof at least two limbs with respect to a reference point.
 3. Thecomputer-implemented method of claim 1, wherein generating, by thecomputing system, the joint data for each joint of the user based on thepositional data comprises: for each joint, calculating an angle for thejoint based on a second angle formed by two three-dimensional vectors atthe joint.
 4. The computer-implemented method of claim 1, whereingenerating, by the computing system, the joint data for each joint ofthe user based on the positional data comprises: for each joint,generating an extend value representative of an angle between adirection of the joint to an adjacent joint.
 5. The computer-implementedmethod of claim 1, wherein generating, by the computing system, thejoint data for each joint of the user based on the positional datacomprises: for each joint, generating an axis value representative of ameasure of an angle formed by the joint compared to a given axis.
 6. Thecomputer-implemented method of claim 1, wherein generating, by thecomputing system, the joint data for each joint of the user based on thepositional data comprises: analyzing the orientation of each of the oneor more sensors with respect to the user's limbs and joints.
 7. Thecomputer-implemented method of claim 6, further comprising: determininga length of each limb of the user based on a height and a weight of theuser.
 8. The computer-implemented method of claim 1, further comprising:causing, by the computing system, display of a comparison between themotion profile and the pre-defined target motion profile in real-time.9. The computer-implemented method of claim 1, wherein the positionaldata is generated while the user performs the movement.
 10. Thecomputer-implemented method of claim 1, wherein the one or more sensorspreprocesses the motion data by filtering the motion data and downsampling the motion data prior to sending the motion data to thecomputing system;
 11. The computer-implemented method of claim 1,further comprising: receiving, by the computing system, additionalmotion data from at least one or more camera devices.
 12. A system,comprising: one or more processors; and a memory having programminginstructions stored thereon, which, when executed by the one or moreprocessors, causes the system to perform operations comprising:receiving, over a wireless network, motion data directly from one ormore sensors located on a body of a user, the motion data correspondingto movement of the user, converting the motion data to positional datafor each joint of the user based on an orientation of each sensor withrespect to each joint and limb of the user, the converting comprising:transforming roll, pitch, and yaw coordinates of the motion data tothree dimensional positional data that illustrates one or more positionsof at least one of one or more joints, limbs, and other reference pointson the body of the user; generating joint data for each joint of theuser based on the positional data; generating a motion profile based onat least the joint data; and evaluating the motion profile by comparingone or more parameters of the generated motion profile with one or morepre-defined parameters of a pre-defined target motion profile.
 13. Thesystem of claim 12, wherein generating the joint data for each joint ofthe user based on the positional data comprises: for each joint,calculating an angle formed at the joint based on a triangulation of theangle formed by a position of at least two limbs with respect to areference point.
 14. The system of claim 12, wherein generating thejoint data for each joint of the user based on the positional datacomprises: for each joint, calculating an angle for the joint based on asecond angle formed by two three-dimensional vectors at the joint. 15.The system of claim 12, wherein generating the joint data for each jointof the user based on the positional data comprises: for each joint,generating an extend value representative of an angle between adirection of the joint to an adjacent joint.
 16. The system of claim 12,wherein generating the joint data for each joint of the user based onthe positional data comprises: for each joint, generating an axis valuerepresentative of a measure of an angle formed by the joint compared toa given axis.
 17. The system of claim 12, wherein generating the jointdata for each joint of the user based on the positional data comprises:analyzing the orientation of each of the one or more sensors withrespect to the user's limbs and joints.
 18. A non-transitory computerreadable medium comprising one or more sequences of instructions, which,when executed by one or more processors, causes a computing system toperform operations comprising: receiving, by the computing system over awireless network, motion data directly from one or more sensors locatedon a body of a user, the motion data corresponding to movement of theuser; converting, by the computing system, the motion data to positionaldata for each joint of the user based on an orientation of each sensorwith respect to each joint and limb of the user, the convertingcomprising: transforming roll, pitch, and yaw coordinates of the motiondata to three dimensional positional data that illustrates one or morepositions of at least one of one or more joints, limbs, and otherreference points on the body of the user; generating, by the computingsystem, joint data for each joint of the user based on the positionaldata; generating, by the computing system, a motion profile based on atleast the joint data; and evaluating the motion profile, by thecomputing system, by comparing one or more parameters of the motionprofile with one or more pre-defined parameters of a pre-defined targetmotion profile.
 19. The non-transitory computer readable medium of claim18, wherein generating, by the computing system, the joint data for eachjoint of the user based on the positional data comprises: for eachjoint, calculating an angle formed at the joint based on a triangulationof the angle formed by a position of at least two limbs with respect toa reference point.
 20. The non-transitory computer readable medium ofclaim 18, wherein generating, by the computing system, the joint datafor each joint of the user based on the positional data comprises: foreach joint, calculating an angle for the joint based on a second angleformed by two three-dimensional vectors at the joint.